Operating system dongle

ABSTRACT

In one general aspect, a method can include determining that a display monitor is operatively connected to a display port included in an operating system (OS) dongle, identifying at least one peripheral device operatively connected to the OS dongle, receiving, by the OS dongle, an indication of requested content from the at least one peripheral device, and responsive to receiving the indication of the requested content, obtaining the requested content from a computer system remote from the OS dongle. The obtaining can include operatively connecting the OS dongle to a network. The network can be operatively interfaced to the computer system that includes the requested remote content. The method can include providing, by the OS dongle, the requested content to the display monitor using the display port.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority under 35 U.S.C. §119(e)(1), to U.S.Provisional Application Ser. No. 62/099,771, filed on Jan. 5, 2015, theentire contents of which are incorporated herein.

TECHNICAL FIELD

This description generally relates a dongle that can be connected tovarious different types of devices.

BACKGROUND

The inclusion of many storage devices, input devices, output devices,sensors and other types of hardware in a computing device can affect theoverall cost and performance of the computing device. In many cases, auser of the computing device may not use, need, or take advantage of allof the available hardware and computing power of the computing device.In addition, much of what a user may use or run on a computing device(e.g., software applications, files, video content) can be included inand stored on the cloud on one or more servers remote from the computingdevice. In these cases, a user may only need a way to take lower-cost,available hardware (e.g., a display device or monitor, a mobile phone, atablet) and interface it to the cloud to run applications and accessfiles and content stored in the cloud.

SUMMARY

In one general aspect, a method includes determining that a displaymonitor is operatively connected to a display port included in anoperating system (OS) dongle, identifying at least one peripheral deviceoperatively connected to the OS dongle, receiving, by the OS dongle, anindication of requested content from the at least one peripheral device,responsive to receiving the indication of the requested content,obtaining the requested content from a computer system remote from theOS dongle, the obtaining including operatively connecting the OS dongleto a network, the network being operatively interfaced to the computersystem that includes the requested remote content, and providing, by theOS dongle, the requested content to the display monitor using thedisplay port.

Example implementations may include one or more of the followingfeatures. For instance, the method can further include receiving, by theOS dongle, user authentication credentials, and based on verifying theuser authentication credentials, enabling the OS dongle to receive inputfrom the at least one peripheral device. The user authenticationcredentials can be associated with an owner of the OS dongle. The userauthentication credentials can be associated with a user of the OSdongle authorized by a cloud administrator of the OS dongle. The atleast one peripheral device can be one of a keyboard, trackpad,touchpad, and mouse.

In another general aspect, a method includes booting an operatingsystem; included in an operating system (OS) dongle, determining that adisplay monitor is connected to a display port included in an operatingsystem (the OS) dongle, requesting authentication of a user of the OSdongle, receiving user authentication credentials, entering the OSdongle into a kiosk mode of operation based on the received userauthentication credentials, establishing a connection to a network, thenetwork including a connection to at least one computer system,executing, by the OS dongle, a cloud based application on the OS dongle,the cloud based application included in the at least one computersystem, and providing, by the OS dongle, output from the cloud basedapplication to the display monitor using the display port.

Example implementations may include one or more of the followingfeatures. For instance, the user authentication credentials can be foran owner of the OS dongle. The method can further include accessing atleast one setting for the owner of the OS dongle based on the receiveduser authentication credentials, the at least one setting being a listof users authorized to use the OS dongle. The method can further includeupdating the list of authorized users. The method can further includeupdating, for at least one authorized user included in the updated listof authorized users, an indication of what the at least one authorizeduser is authorized to do with the OS dongle. The user authenticationcredentials can be for a user authorized as a user of the OS dongle byan owner of the OS dongle. The method can further include accessing atleast one setting for the user of the OS dongle based on the receiveduser authentication credentials. The method can further includechanging, by the user, the accessed at least one setting. Receiving userauthentication credentials can include receiving a near fieldcommunication (NFC) enabled one time password (OTC) token.

In yet another general aspect, an apparatus can include a display portconfigured to interface to a display connector included on a displaymonitor, a WiFi communication module, a central processing unit (CPU), agraphics processing unit (GPU), a video processing unit (VPU), and aWiFi antenna configured to operatively interface with the WiFicommunication module and a WiFi network external to the apparatus, theCPU, the GPU, and the VPU operatively configured to execute an operatingsystem on the apparatus, and to execute at least one application storedremote from the apparatus.

Example implementations may include one or more of the followingfeatures. For instance, the remote application can be stored on thecloud. The apparatus can further include a Bluetooth communicationmodule configured to operatively couple at least one peripheral deviceto the apparatus. The at least one peripheral device can be one of akeyboard, trackpad, touchpad, and mouse. The apparatus can furtherinclude at least one communications connector, and a Universal SerialBus (USB) communication module configured to operatively couple at leastone peripheral device interfaced to the at least one communicationsconnector to the apparatus. The apparatus can further include a memoryconfigured to operatively support the operating system while allowing auser to locally buffer content and data securely. The apparatus canfurther include a memory interface configured to provide an interfacebetween the memory and the CPU, the GPU, and the VPU. A height of theapparatus is approximately 0.5 inches, a length of the apparatus isapproximately 3.2 inches, and a width of the apparatus is approximately2.2 inches. The apparatus can further include a communications moduleconfigured to receive user authentication credentials. The CPU, the GPU,and the VPU can be operatively configured to execute the operatingsystem on the apparatus and to execute the at least one applicationstored remote from the apparatus based on the received userauthentication credentials.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features will beapparent from the description and drawings, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A is a diagram that illustrates an example operating system donglefrom a top view.

FIG. 1B is a diagram that illustrates an example operating system donglefrom a side perspective view.

FIG. 1C is a diagram that illustrates an example OS dongle pluggedinto/connected to a display monitor.

FIG. 1D is a diagram that illustrates a detailed view of an example OSdongle plugged into/connected to a display monitor.

FIG. 2 is a block diagram showing the components included in an exampleoperating system dongle.

FIG. 3 is a diagram that illustrates the use of an operating systemdongle with a display monitor, a keyboard, and a mouse.

FIG. 4 is a diagram that illustrates the use of an operating systemdongle with a display monitor, a keyboard, and a mobile device.

FIG. 5A is a diagram that illustrates the use of an operating systemdongle with a display monitor and a mobile device.

FIG. 5B is a diagram that illustrates the use of an operating systemdongle 500 with a mobile device.

FIG. 6A is a diagram that illustrates the use of an operating systemdongle with a cast terminal.

FIG. 6B is a diagram that illustrates an alternate use of an operatingsystem dongle with a cast terminal.

FIG. 7 is a flowchart that illustrates a method for using an operatingsystem dongle.

FIG. 8 is a flowchart that illustrates an alternate method for using anoperating system dongle.

FIG. 9 shows an example of a computer device and a mobile computerdevice that can be used to implement the techniques described herein.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

In general, most computing devices can include numerous hardwarecomponents for performing a vast array of tasks for a user. In manycases, however, a user may use and interact with a small subset of thehardware components. The inclusion of numerous hardware components suchas storage devices, input devices, output devices, sensors and othertypes of hardware in a computing device can add significantly to thecost of the computing device. Many users, however, interact withsoftware applications (e.g., email, browsers) that are resident on thecloud or accessible using the World Wide Web. Users can access content(e.g., streaming video or audio files (e.g., movie, music)) that isresident on the cloud or accessible using the World Wide Web. Users canalso manage and store image and data files (e.g., pictures anddocuments) in storage on the cloud or some type of server remote fromthe computing device.

Users may also want to access software applications, content, imagefiles, and data files on multiple types of devices. In some cases, thedevices may belong to (e.g., be owned by) the user. In some cases, thedevices may be publically accessible devices or devices that belong to(e.g., are owned by) someone else. For example, a user may be travelingto a conference where the user is scheduled to be a presenter. Whiletraveling, the user may want to access his or her presentation onmultiple devices owned or provided by the user (e.g., a laptop computer,a notebook computer, a mobile phone, a tablet). The user may also wantto access the presentation on multiple devices that he or she does notown or provide. These systems can include, but are not limited to,presentation systems located in the facility hosting the conference, ahotel room that has a television or display monitor, and a publiccomputer or kiosk located in the lobby of a hotel or in a coffee shop.The user may want to access, edit, and/or run the presentation. Theability to perform these operations on the presentation necessitateaccess to the data file that includes the presentation as well as thesoftware application(s) needed to access, edit, and run thepresentation.

FIG. 1A is a diagram that illustrates an example operating system (OS)dongle 100 from a top view.

FIG. 1B is a diagram that illustrates the OS dongle 100 from a sideperspective view.

FIG. 1C is a diagram that illustrates the example OS dongle 100 pluggedinto/connected to a display monitor 120.

FIG. 1D is a diagram that illustrates a detailed view of the example OSdongle 100 plugged into/connected to a display monitor 120.

Referring to FIGS. 1A and 1B, the OS dongle 100 can include a fulloperating system on a small device (e.g., the size of a credit card)that a user can easily carry. For example, in some implementations, alength 10 of the OS dongle 100 can be approximately 3.2 inches (e.g.,between 3.0 inches and 3.4 inches). A width 15 of the OS dongle can beapproximately 2.2 inches (e.g., between 2.0 inches and 2.4 inches). Aheight 25 of the OS dongle 100 can be approximately 0.5 inches (between0.30 inches and 0.51 inches). For example, in some implementations, alength 10 of the OS dongle 100 can be approximately 2.5 inches (e.g.,between 2.0 inches and 3.0 inches). A width 15 of the OS dongle can beapproximately 1.2 inches (e.g., between 1.0 inch and 1.4 inches). Aheight 25 of the OS dongle 100 can be approximately 0.5 inches (between0.30 inches and 0.51 inches). In some implementations, the height 25 ofthe OS dongle 100 can be dependent on the height of communicationconnectors 102 a-b (first communication connector 102 a and secondcommunication connector 102 b).

In some implementations, the communication connectors 102 a-b can be thesame type of connector. In some implementations, the first communicationconnector 102 a can be a different type of connector than the secondcommunication connector 102 b. For example, the communication connectors102 a-b can be Universal Serial Bus (USB) connectors, receptacles, orports. The USB receptacles can include, but are not limited to, USBA-type receptacles, USB B-type receptacles, micro-USB A receptacles,micro-USB B receptacles, micro-USB AB receptacles, USB five pin Mini-breceptacles, USB four pin Mini-b receptacles, USB 3.0 A-typereceptacles, USB 3.0 B-type receptacles, USB 3.0 Micro B receptacles,and USB C-type receptacles.

As shown in FIG. 1C, a user can connect the OS dongle 100 to the displaymonitor 120 (e.g., a High-Definition Multimedia Interface (HDMI) port)by plugging (connecting) the display connector 104 into a display port122 that can be a connector or receptacle for receiving the displayconnector 104. As shown in FIG. 1D, in many cases, a side 108 of the OSdongle 100 can be near flush with a side 124 of the display monitor 120.For example, a distance 30 between the side 124 of the display monitor120 and the side 108 of the OS dongle 100 can be approximately 0.10inches (e.g., between 0.05 inches and 0.15 inches).

Referring to FIGS. 1A-D, a first distance 20 between the side 108 of theOS dongle 100 and a first side 110 of the first communication connector102 a can be determined such that when a connector is plugged into(interfaced with) the first communications connector 102 a, a housingsurrounding the connector may not go beyond the side 108 of the OSdongle 100. For example, this can ensure that a cable that includes theconnector and housing at one end can be easily plugged into (interfacedwith) the first communication connector 102 a without interfering with(coming in contact with) the side 124 of the display monitor 120. Forexample, the first distance 20 can be approximately 0.30 inches (e.g.,between 0.25 inches and 0.35 inches).

Referring to FIGS. 1A-D, a second distance 35 between a second side 112of the first communication connector 102 a and a first side 114 of thesecond communication connector 102 b can be determined such that when afirst connector is plugged into (interface with) the firstcommunications connector 102 a and a second connector is plugged into(interfaced with) the second communications connector 102 b, a firsthousing surrounding the first connector may not interfere with (come incontact with) a second housing surrounding the second connector. Thiscan ensure that the first connector with the first housing can be easilyplugged into (interfaced with) the first communication connector 102 awithout interfering with (coming in contact with) a second housingsurrounding the second connector that may be plugged into (interfacedwith) the second communication connector 102 b (and vice versa). Forexample, the second distance 35 can be approximately 0.3 inches (e.g.,between 0.25 inches and 0.35 inches).

Referring to FIGS. 1A-C, the OS dongle 100 can include a WiFi antenna106. The OS dongle 100 can wirelessly interface with/connect to anetwork or other computing device using a WiFi (IEEE 802.11x) connectionthat interfaces with the WiFi antenna 106. In some implementations, theOS dongle 100 can include a transceiver that allows the OS dongle 100 towirelessly interface with/connect to a cellular telecommunicationsnetwork. In some implementations, the OS dongle 100 can wirelesslyinterface with/connect to another computing device using a WiFi or atype of Bluetooth connection. The other computing device (e.g., a mobilephone) can then access a cellular telecommunications network.

In some implementations, the connector (receptacle) for the display port122 and the connector (receptacle) for the display connector 104 areimplemented such that the display connector 104 can be plugged into thedisplay port 122. In some implementations, the connector (receptacle)for the display port 122 is a male connector and the connector(receptacle) for the display connector 104 is a female connector. Insome implementations, the connector (receptacle) for the display port122 is a female connector and the connector (receptacle) for the displayconnector 104 is a male connector.

In some implementations, the OS dongle 100 can be connected to thedisplay monitor 120 using a cable. The cable can include a firstconnector at a first end that properly mates with the type of connector(receptacle) for the display port 122 and a second connector at a secondend that properly mates with the type of connector (receptacle) for thedisplay monitor 120.

The OS dongle 100 can include a power connector 116, amicrophone/headphone connector 118, a light emitting diode (LED) 126,and/or a power button 128. An external source of power for the OS dongle100 can be connected to the power connector 116 (power receptacle orpower plug). A microphone or headphone can be connected to themicrophone/headphone connector 118 (microphone/headphone receptacle ormicrophone/headphone plug). For example, the LED 126 can be powered ON(emit light) when power is applied to the OS dongle 100 or when power isconsumed by the OS dongle at a rate that exceeds a threshold rate. Inaddition or in the alternative, the LED 126 may blink (turn ON and OFF)at a particular rate to indicate a mode of operation of the OS dongle100. For example, the LED 126 may blink at a first rate when the OSdongle 100 is attempting to complete a WiFi connection. In anotherexample, the LED 126 may blink at a second rate when the OS dongle 100is identifying and connecting to a Bluetooth device. A user can pressthe power button 128 (power switch) in order to provide or remove powerfrom the OS dongle 100. The use of the power button 128 can allow the OSdongle 100 to remain connected to/plugged into the display monitor 120when not in use.

FIG. 2 is a block diagram showing components included in an exampleoperating system dongle 200. The OS dongle 200 can be the OS dongle 100as shown in FIGS. 1A-D. The OS dongle 200 can incorporate sufficientcomputing power to run a full operating system on the OS dongle 200along with sufficient memory to support the OS while allowing a user tolocally buffer content and data securely. The OS dongle 200 can includecircuity and software that enable the OS dongle 200 to connect to thecloud and/or to remote servers using a network. The OS dongle 200 canuse WiFi or other wireless communications protocols to connect to arouter or other computing device that can access a network. Using thenetwork connection, the OS dongle 200 can interface with the cloudand/or one or more servers (e.g., a content server) in order to accessand run cloud-based applications. In addition, the OS dongle 200 canobtain data, files and content remotely stored in the cloud or otherremote servers (e.g., content servers).

The OS dongle 200 can include a central processing unit (CPU) 202, agraphics processing unit (GPU) 204, and/or a video processing unit (VPU)206. The CPU 202 can perform general computing operations for the OS.The GPU 204 can perform graphics-specific operations such as imagescaling and rotation. The VPU 206 can perform video encoding anddecoding operations.

A display interface 208 can provide display data (e.g., video data,image data, streaming audio and video data) to an external displaymonitor via a display connector when the OS dongle 200 is interface with(plugged into) the display monitor. For example, referring to FIG. 1C,the display monitor 120 can receive display data via the displayconnector 104 when the OS dongle 100 is interface with (plugged into)the display port 122 on the display monitor 120.

In some implementations, the OS dongle 200 can connect to or beinterfaced to a computing device that can provide or act as a displayinterface to an external display monitor. The computing device can be amobile computing device that can act as a casting device by receivingdata (content) from the OS dongle 200 and, using the display interface,can provide the data (content) to the external display monitor. In somecases, the OS dongle 200 can communicate with (connect to or interfacewith) the computing device wirelessly using at least one type ofwireless interface described herein. In these implementations, the OSdongle 200 may not include the display interface 208, as the computingdevice acts as or provides the functions of the display interface.

A memory interface 210 can provide an interface between memory 212 andthe CPU 202, the GPU 204, the VPU 206, the display interface 208 andcommunication modules 214. The communication modules 214 can include,but are not limited to, a USB communication module 216, a WiFicommunication module 218, a Bluetooth communication module 220, atransceiver 222, and an Ethernet (e.g., IEEE 802.3) communication module224. In some implementations, the OS dongle 200 may include all of thecommunication modules 214. In some implementations, the OS dongle 200may include less than all of the communication modules 214. For example,the OS dongle may include the USB communication module 216, the WiFicommunication module 218, and the Bluetooth communication module 220.The communication modules 214 can be used to establish connections andcommunication between the OS dongle 200 and one or more externalnetworks and/or devices. For example, the WiFi communication module 218can interface with a WiFi antenna included on the OS dongle 200 (e.g.,the WiFi antenna 106 included on the OS dongle 100). The transceiver 222can be used to wirelessly interface/connect the OS dongle 200 to acellular telecommunications network (a cellular data network).

In some implementations when the OS dongle 200 includes the Ethernetcommunication module 224, the OS dongle 200 can further include anEthernet port (receptacle or connector) (e.g., an RJ-45 connector). Oneend of an Ethernet cable can be plugged into the Ethernet connector onthe OS dongle 200. The other end of the Ethernet cable can be pluggedinto, for example, an Ethernet port on a router (e.g., a broadbandrouter), or an uplink port on a broadband modem (e.g., a wide areanetwork (WAN) port). The router or modem can provide a connection to anetwork.

In some implementations, referring to FIG. 1, the OS dongle 200 can beconnected, using a communication port (e.g., one of the communicationports 102 a-b), to an external Ethernet dongle. The external Ethernetdongle can then be connected to a network. For example, one end of anEthernet cable can be plugged into an Ethernet connector included in theEthernet dongle 200 and other end of the Ethernet cable can be pluggedinto, for example, an Ethernet port on a router or an uplink port on abroadband modem.

FIG. 3 is a diagram that illustrates the use of an OS dongle 300 with adisplay monitor 320, a keyboard 340, and a mouse 342. The OS dongle 300can be the OS dongle 100 as shown in FIGS. 1A-D or the OS dongle 200 asshown in FIG. 2. As shown in FIG. 3, a user can connect the OS dongle300 to the display monitor 320 by plugging the display connector 304into a port 322 (e.g., a High-Definition Multimedia Interface (HDMI)port) included in the display monitor 320. In some implementations, theOS dongle 300 can connect to/interface with the display monitor 320using a wireless connection. In these implementations, the OS dongle 300may not include the display connector 304 and/or the display monitor 320may not include the port 322.

The user may also connect a power source to a power connector 316. Insome implementations, the power source may be provided by the displaymonitor 320. A user may connect a cable between the power connector 316and a port on the display monitor 320 that can provide a source ofpower. In some implementations, a user may connect a power converter tothe power connector 316. The power converter can be plugged into asource of AC power (e.g., a wall outlet) and can convert the AC power tothe DC power needed by the OS dongle 300. A cable can connect the DCpower output by the power converter to the OS dongle 300. One end of thecable can plug into the power converter and the other end of the cablecan plug into the power connector 316. In some implementations, thepower connector 316 can be a USB receptacle (e.g., a micro USBreceptacle) that can be connected to micro USB charger/power adapter.For example, a micro USB charger/power adapter can supply five volts andthree amperes of power to the OS dongle 300. The power adapter can beplugged into a wall outlet that supplies AC power to an AC/DC converterthat generates the five volts/three amperes.

The OS dongle 300 can connect to one or more computer systems (e.g.,computer system 330 and computer system 334) by way of a network 338using a WiFi or other type of wired/wireless communication protocolconnections as described herein. The computer system 330 can include oneor more computing devices (e.g., server 332 a) and one or morecomputer-readable storage devices (e.g., repository 332 b). The computersystem 334 can include one or more computing devices (e.g., server 336a) and one or more computer-readable storage devices (e.g., repository336 b). The OS dongle 300 can communicate with the computer systems 330,334 (and the computer systems 330, 334 can communicate with the OSdongle 300) using the network 338. For example, referring to FIG. 2, theWiFi communication module 218 can communicate wirelessly with a network338 using a WiFi antenna 306.

In some implementations, each computer system 330, 334 can representmore than one computing device working together to perform server-sideoperations. For example, though not shown in FIG. 3, multiple serversworking together can perform server-side operations. In some cases, asingle proprietor can provide the multiple servers. In other cases, theone or more of the multiple servers can provide other functionalitiesfor the proprietor. In a non-limiting example, a computer system (e.g.,the computer system 330) can also include a search server and a webcrawler server. A computer system (e.g., the computer system 334) can bea content server. Various types of content can be stored in therepository 336 b and provided to the OS dongle 300 by way of the network338.

In some implementations, the network 338 can be a public communicationsnetwork (e.g., the Internet, cellular data network, dialup modems over atelephone network) or a private communications network (e.g., privateLAN, leased lines). In some implementations, the OS dongle 300 cancommunicate with the network 338 using one or more high-speed wirelesscommunications protocols (e.g., 802.11 variations, WiFi, Bluetooth,Transmission Control Protocol/Internet Protocol (TCP/IP), Ethernet, IEEE802.3, etc.).

In some implementations, the OS dongle 300 can recognize and connect tothe keyboard 340 and the mouse 342 using a wireless communication systemand protocol such as Bluetooth or Bluetooth Low Energy (Bluetooth LE). ABluetooth/Bluetooth LE enabled device can frequently “search” for otherBluetooth/Bluetooth LE enabled devices to connect to. For example, theOS dongle 300, using Bluetooth, can recognize a Bluetooth-enabledkeyboard (e.g., the keyboard 340) and a Bluetooth-enabled mouse (e.g.,the mouse 342) and connect to each device.

In some implementations, the OS dongle 300 can connect to the keyboard340 and/or the mouse 342 using a wired connection such as USB. Forexample, a USB cable can connect the keyboard 340 to a firstcommunication connector 302 a and a USB cable can connect the mouse 342to a second communication connector 302 b. In some implementations, forexample, the OS dongle 300 can connect to the keyboard 340 using a nanotransceiver that plugs into/connects to either the first communicationconnector 302 a or the second communication connector 302 b. In asimilar manner, for example, the OS dongle 300 can connect to the mouse342 using a nano transceiver that plugs into/connects to either thefirst communication connector 302 a or the second communicationconnector 302 b.

In some implementations, one or more peripheral devices can be pluggedinto (interfaced with) the OS dongle 300. For example, referring to FIG.3, the OS dongle 300 can connect to the keyboard 340 and the mouse 342using WiFi. A user can connect a USB flash drive to the firstcommunication connector 302 a. The flash drive can include applicationsand data for use by the OS dongle 300. In these implementations, a usermay not need to connect the keyboard 340 and/or the mouse 342 to the OSdongle 300. The touchscreen may be capable of providing the input thatcould be provided by the keyboard 340 and the mouse 342.

In some implementations, the display monitor 320 can be a touchscreen. Acable and/or connector included with the display monitor 320 can pluginto (interface with) the first communication connector 302 a or thesecond communication connector 302 b to provide the input from thetouchscreen to the OS dongle 300.

A user can interface/plug in the OS dongle 300 to any display monitorthat can accept the display connector 304. Once connected, the user canutilize one or more standard, off-the-shelf available peripherals (e.g.,a wireless keyboard, a wireless mouse, a USB keyboard, a USB mouse, aflash drive, an external USB hard drive, etc.) that can interface withthe OS dongle 300. In some cases, the peripherals can interface to theOS dongle 300 wirelessly using a wireless communication protocol such asWiFi or Bluetooth. In some cases, the peripherals can be interface tothe OS dongle 300 using wired connections (e.g., USB) to thecommunication connectors 302 a-b.

Referring to FIGS. 2 and 3, the OS dongle 300 can run an operatingsystem on the OS dongle 300 using the CPU 202, GPU 204, and the VPU 206.For example, the OS dongle 300 can include sufficient computing powerand memory in order to run the operating system on the OS dongle 300. Ineffect, the OS dongle 300 can provide the “brains” needed to create acomputing device that includes just the display monitor 320, thekeyboard 340 and the mouse 342.

In a non-limiting example, the memory 212 can include one or more ofdynamic random access memory (DRAM), static random access memory,non-volatile random access memory (NVRAM) and other types of persistentmemory storage such as a solid-state drive (SSD), flash memory,MultiMediaCard (MMC) and an embedded MMC (eMMC). In someimplementations, the OS dongle 300 can store an operating system in theNVRAM. In some implementations, the OS dongle 300 may also use and run avirtual operating system provided from the cloud. For example, the OSdongle 300 can store an operating system in memory 212 (e.g., NVRAM)that may not include a desktop user interface. The running of thevirtual operating system in the cloud can provide the desktop userinterface.

An owner of the OS dongle 300 can become a registered user and cloudadministrator for the OS dongle 300. For example, the owner can registerthe OS dongle 300 with a cloud service or a web service provider. Theuser can control the operation of the OS dongle 300 using servicesprovided by the cloud service or web service provider. The OS dongle 300can then access and run applications, virtual operating systems, andother software included in the cloud. In addition, the OS dongle 300 canaccess content in the cloud for display on the display monitor 320. Insome cases, the OS dongle 300 can download the content locally to the OSdongle 300 for storage in persistent memory included in the OS dongle300. In these cases, the OS dongle 300 can display the content when theOS dongle 300 is offline (not connected to the network 338).

A registered user of the OS dongle 300 can control the content andmode(s) of operation of the OS dongle 300. A registered user of the OSdongle 300 can control what content other users of the OS dongle 300 canaccess. A registered user of the OS dongle 300 can control what mode(s)of operation the OS dongle 300 can run in for each specific user of theOS dongle 300.

FIG. 4 is a diagram that illustrates the use of an operating systemdongle 400 with a display monitor 420, keyboard 440, and a mobile device444. The mobile device 444 can include, but is not limited to, a tabletcomputing device, a smartphone, and a personal digital assistant. The OSdongle 400 can be the OS dongle 100 as shown in FIGS. 1A-D or the OSdongle 200 as shown in FIG. 2. As shown in FIG. 4, a user can connectthe OS dongle 400 to the display monitor 420 by plugging the displayconnector 404 into a port 422 (e.g., a High-Definition MultimediaInterface (HDMI) port) included in the display monitor 420. The OSdongle 400 can operate in a similar manner as the OS dongle 300 as shownin FIG. 3.

The OS dongle 400 can connect to one or more computer systems (e.g.,computer system 430 and computer system 434) by way of a network 438using a WiFi or other type of wired/wireless communication protocolconnections described herein. The computer system 430 can include one ormore computing devices (e.g., server 432 a) and one or morecomputer-readable storage devices (e.g., repository 432 b). The computersystem 434 can include one or more computing devices (e.g., server 436a) and one or more computer-readable storage devices (e.g., repository436 b). The OS dongle 400 can communicate with the computer systems 430,434 (and the computer systems 430, 434 can communicate with the OSdongle 400) using the network 438. For example, referring to FIG. 2, theWiFi communication module 218 can communicate wirelessly with a network438 using a WiFi antenna 406.

The OS dongle 400 can operate in a similar manner as the OS dongle 300described with reference to FIG. 3. For example, the user may alsoconnect a power source to a power connector 416 in a similar manner asdescribed with reference to FIG. 3. In some implementations, eachcomputer system 430, 434 can represent more than one computing deviceworking together to perform server-side operations in a similar manneras each computer system 330, 334 as described with reference to FIG. 3.

In some implementations, the network 438 can be a network similar to thenetwork 338 as described with reference to FIG. 3. In someimplementations, the OS dongle 400 can recognize and connect to thekeyboard 440 using a wireless communication system and protocol such asBluetooth or Bluetooth Low Energy (Bluetooth LE). The OS dongle 400,using Bluetooth, can recognize a Bluetooth-enabled keyboard (e.g., thekeyboard 440). In addition, in some implementations, the OS dongle 400can recognize and connect to the mobile device 444 using a wirelesscommunication system and protocol such as Bluetooth or Bluetooth LowEnergy (Bluetooth LE). In some implementations, the OS dongle 400 canconnect to the mobile device 444 using a WiFi connection. In someimplementations, the OS dongle 400 can connect to the keyboard 440 usinga wired connection such as USB. For example, a USB cable can connect thekeyboard 440 to a first communication connector 402 a.

When using the OS dongle 400 in the configuration shown in FIG. 4, themobile device 444 can provide a similar interface as that provided bythe mouse 342 in the configuration shown in FIG. 3.

The OS dongle 400 can be self-configuring. For example, when pluggedinto the display monitor 420, the OS dongle 400 can discover and connectto the keyboard 440 and the mobile device 444. Based on making theseconnections, the OS dongle 400 can be configured to run the operatingsystem in a full computer mode, using the mobile device 444 as a type ofmouse input device (e.g., a pointing device).

In some implementations, the display monitor 420 can be a touchscreen. Acable and/or connector included with the display monitor 420 can pluginto (interface with) the first communication connector 402 a or thesecond communication connector 402 b to provide the input from thetouchscreen to the OS dongle 400. In these implementations, a user maynot need to connect the keyboard 440 as the touchscreen may be capableof providing the input that could be provided by the keyboard 440. Themobile device 444 can provide other input to the OS dongle 400 (e.g., averification code) that can be used to verify the use of the OS dongle400 by the user.

FIG. 5A is a diagram that illustrates the use of an operating systemdongle 500 with a display monitor 520 and a mobile device 544. Themobile device 544 can include, but is not limited to, a tablet computingdevice, a smartphone, and a personal digital assistant. The OS dongle500 can be the OS dongle 100 as shown in FIGS. 1A-D or the OS dongle 200as shown in FIG. 2. As shown in FIG. 5A, a user can connect the OSdongle 500 to the display monitor 520 by plugging the display connector504 into a port 522 (e.g., a High-Definition Multimedia Interface (HDMI)port) included in the display monitor 520.

The OS dongle 500 can connect to one or more computer systems (e.g.,computer system 530 and computer system 534) by way of a network 538using a WiFi or other type of wired/wireless communication protocolconnections as described herein. The computer system 530 can include oneor more computing devices (e.g., server 532 a) and one or morecomputer-readable storage devices (e.g., repository 532 b). The computersystem 534 can include one or more computing devices (e.g., server 536a) and one or more computer-readable storage devices (e.g., repository536 b). The OS dongle 500 can communicate with the computer systems 530,534 (and the computer systems 530, 534 can communicate with the OSdongle 500) using the network 538. For example, referring to FIG. 2, theWiFi communication module 218 can communicate wirelessly with a network538 using a WiFi antenna 506.

A user can connect a power source to a power connector 516 in a similarmanner as described with reference to the OS dongle 300 as shown in FIG.3. In some implementations, each computer system 530, 534 can representmore than one computing device working together to perform server-sideoperations in a similar manner as each computer system 330, 334 asdescribed with reference to FIG. 3.

In some implementations, the network 538 can be a network similar to thenetwork 338 as described with reference to FIG. 3. In someimplementations, the OS dongle 500 can recognize and connect to themobile device 544 using a wireless communication system and protocolsuch as Bluetooth or Bluetooth Low Energy (Bluetooth LE). In someimplementations, the OS dongle 500 can connect to the mobile device 544using a WiFi connection. The mobile device 544 can provide input to theOS dongle 500 for use in controlling the operations of the OS dongle500.

In some implementations, a user verification code can be provided to themobile device 544 (e.g., the mobile device 544 can receive a shortmessage service (SMS) message with the verification code) for use inauthenticating the user of the OS dongle 500. The user can provide theverification code received by the mobile device 544 to the OS dongle500.

In some implementations, a user may use a security key for use inauthenticating the use of the OS dongle 500. In some implementations, auser may use near field communication (NFC) with the security key whenauthenticating the use of the OS dongle 500. In some implementations, auser can use an NFC enabled one time password (OTC) token (security key)when authenticating the use of the OS dongle 500. Once authenticated foruse, the user may access settings and change their user settingsaccordingly. In cases where the user is the owner of the OS dongle 500,the owner may access their user settings to update the listing of theusers authorized to use the OS dongle 500 along with what each user isauthorized to do with the OS dongle 500.

In some implementations, the mobile device 544 can provide input to theOS dongle 500 in a manner similar to the input provided by a keyboardand/or a mouse. For example, a soft keyboard/keypad can be displayed ona display 546 of the mobile device 544. Interactions of the user withthe soft keyboard/keypad can be provided to the OS dongle 500. Inaddition or in the alternative, the mobile device 544 can be used as amouse or pointing device for interacting with content displayed on thedisplay monitor 520. In some implementations, the display monitor 520can be a touchscreen. A cable and/or connector included with the displaymonitor 520 can plug into (interface with) a first communicationconnector 502 a or a second communication connector 502 b to provide theinput from the touchscreen to the OS dongle 500.

In some implementations, the OS dongle 500 can be placed in a kiosk modeof operation. For example, the display monitor 520 can displayinformation provided by a limited number of applications. In addition,the OS dongle 500 may accept a limited amount of input. As such, theremay be little or no need for peripheral input devices for interfacing tothe OS dongle 500. For example, the OS dongle 500 can run a weatherapplication that is provided from, or hosted in, the cloud. The weatherapplication can provide weather conditions for one or more locations fordisplay on the display monitor 520. In another example, the OS dongle500 can run an airline flight schedule application provided from, orhosted in, the cloud. The airline flight schedule application canprovide a continual update of flight schedules (arrival and departuretimes) at a particular airport for display on the display monitor 520.

In some implementations, the OS dongle 500 can be powered up and pluggedinto/interfaced with the display monitor 520 can boot up (initialize)into a preconfigured kiosk mode of operation. In the kiosk operatingmode, the OS dongle 500 can boot up and start the operating system, andconnect to the computing systems 530, 534 by connecting to the network538 using a WiFi connection that utilizes the WiFi antenna. A user codecan be provided to the mobile device 544 (e.g., the mobile device 544can receive a short message service (SMS) message with the code) for usein authenticating the user of the OS dongle 500. The user can providethe verification code received by the mobile device 544 to the OS dongle500. Once authenticated, the OS dongle 500 can begin a kiosk operatingmode.

FIG. 5B is a diagram that illustrates the use of the operating systemdongle 500 with the mobile device 544. As described, the mobile device544 can include, but is not limited to, a tablet computing device, asmartphone, and a personal digital assistant. The mobile device 544 cancommunicate with external devices using one or more types of wirelesscommunication protocols (e.g., WiFi, Bluetooth, Bluetooth LE). The OSdongle 500 can also communicate with external devices using one or moretypes of wireless communication protocols (e.g., WiFi, Bluetooth,Bluetooth LE).

In the example shown in FIG. 5B, the mobile device 544 may not include adisplay port. In addition or in the alternative, the OS system dongle500 may not include a display connector. The mobile device 544 maycommunicate with (interface to) the OS dongle 500 using one or morewireless connections to receive content, image, and/or data files fromthe cloud or some type of server remote from the mobile device 544(e.g., servers 532 a and 536 a). The mobile device 544 can include avideo processor/decoder that can process video and image contentreceived from the OS dongle 500. The OS dongle 500 can improve theperformance to the mobile device 644 because the OS dongle 500 can becapable of increased computing power compared to the computing power ofthe mobile device 544. In addition or in the alternative, the computingpower of the mobile device 544 can be used for displaying content whilethe computing power of the OS dongle 500 can be used for computationalimprovements to applications running on the cloud and/or the mobiledevice 544.

FIG. 6A is a diagram that illustrates the use of an operating systemdongle 600 with a cast terminal 650. The cast terminal 650 can include adisplay component 652 integrated with an input component 654 housed inan enclosure 660. The cast terminal 650 can include a display device 662as an output device that is included in the display component 652. Thecast terminal 650 can include one or more speakers 668 as additionaloutput devices.

The cast terminal 650 can include a keyboard 664 an as input devicealong with a trackpad and/or touchpad 666 that are included in the inputcomponent 654. The cast terminal 650 can include hardware needed tointerface with the display device 662, the one or more speakers 668, thekeyboard 664, and the trackpad and/or touchpad 666. The cast terminal650 can communicate with external devices using one or more types ofwireless communication protocols (e.g., WiFi, Bluetooth, Bluetooth LE).The cast terminal 650 can include hardware components for implementingthe communication interfaces (e.g., a communication module 658). Thecast terminal 650 can include electrical components needed to operatethe hardware included on the device (e.g., the display device 662, thespeakers 668, the keyboard 664, and the trackpad and/or touchpad 666).The cast terminal can include a battery.

Compared to a more traditional type of computing device that can includestorage devices, and many other additional input devices, outputdevices, and sensors, the cast terminal 650 can be considered a type ofstateless laptop computing device (and can also be referred to as aminimized laptop computing device) because the cast terminal 650 may notinclude (e.g., excludes) a central processing unit (CPU). The castterminal 650 can cost much less that a more traditional type ofcomputing device as it can include fewer components and features. Insome implementations, the cast terminal 650 can include a low power, lowcost, minimal performance processor (or equivalent circuitry) for use ininitializing one or more modules and interfaces included in the castterminal 650.

The OS dongle 600 can be the OS dongle 100 as shown in FIGS. 1A-D or theOS dongle 200 as shown in FIG. 2. As shown in FIG. 6A, the OS dongle 600can be plugged into (interface with) the cast terminal 650. In someimplementations, the OS dongle 600 can be inserted and removed from thecast terminal 650 by way of a slot or access opening included in thecast terminal 650. For example, the OS dongle 600 can be placed into aslot or opening included in the input component 654 of the cast terminal650. A user can connect the OS dongle 600 to the cast terminal 650 byplugging the display connector 604 into a port 622 (e.g., aHigh-Definition Multimedia Interface (HDMI) port) included in a displaymodule 656. The OS dongle 600 once plugged into (connected to) the castterminal 650 is located behind (underneath) the input component 654(e.g., behind (in back of) the keyboard 664 and/or the trackpad and/ortouchpad 666).

Referring to FIGS. 2 and 3, the OS dongle 600 can run an operatingsystem on the OS dongle 600 using the CPU 202, GPU 204, and the VPU 206.For example, the OS dongle 600 can include sufficient computing powerand memory in order to run the operating system on the OS dongle 600.The OS dongle 600 can provide the “brains” needed by the cast terminal650 (e.g., the OS dongle 600 can provide the central computing power thecast terminal 650 lacks) to create a computing device with similarcapabilities as a laptop or notebook computing device.

The OS dongle 600 can connect to one or more computer systems (e.g.,computer system 630 and computer system 634) by way of a network 638using a WiFi or other type of wireless communication protocolconnection. The computer system 630 can include one or more computingdevices (e.g., server 632 a) and one or more computer-readable storagedevices (e.g., repository 632 b). The computer system 634 can includeone or more computing devices (e.g., a content server 636 a) and one ormore computer-readable storage devices (e.g., a content repository 636b). The OS dongle 600 can communicate with the computer systems 630, 634(and the computer systems 630, 634 can communicate with the OS dongle600) using the network 638. For example, referring to FIG. 2, the WiFicommunication module 218 can communicate wirelessly with a network 638using a WiFi antenna 606.

The communication module 658 can be capable of unidirectional and/orbidirectional communication. The communication module 658 can transmitkeystroke data from the keyboard 664 to the OS dongle 600 using awireless communication protocol (e.g., Bluetooth, Bluetooth LE, WiFi).The communication module 658 can also transmit trackpad data (e.g., acoordinate) from the trackpad and/or touchpad 666 to the OS dongle 600using a wireless communication protocol (e.g., Bluetooth, Bluetooth LE,WiFi). In some implementations, the input component 654 can include apointing device (e.g., a mouse). The communication module 658 cantransmit data from the pointing device to the OS dongle 600 using awireless communication protocol (e.g., Bluetooth, Bluetooth LE, WiFi).In some implementations, the input component 654 may allow one or moreexternal devices (devices external to the cast terminal 650) to beconnected to/interfaced with the cast terminal 650 using thecommunication module 658. In these implementations, the communicationmodule 658 may communicate unidirectionally and/or bidirectionally withthe external device. For example, a user may connect/plug-in an externalinput device (e.g., a mouse) to the cast terminal 650.

The display device 662 can include, but is not limited to, a liquidcrystal display (LCD), a light emitting diode (LED) display, a plasmadisplay, or a cathode ray tube (CRT) display. The display module 656 canreceive audio and/or video data (e.g., streaming video data) from the OSdongle 600. The received video data can be encoded in a format that canbe decoded by, for example, a System on a Chip (SoC) included in thedisplay component 652. The SoC can include codecs for hardware decodingof one or more video compression formats (e.g., V8, H.264/MPEG-4Advanced Video Coding (AVC), composite video (CVBS) (e.g., NTSC, PAL,SECAM), S-Video, component video, video graphics array (VGA), super VGA(sVGA)). The decoded video data can be converted into signals needed todrive the display device. For example, a low-voltage differentialsignaling (LVDS) LCD-panel interface can provide received streamingvideo to an LCD-panel timing controller included in an LCD device. Inaddition, the decoded video data can be converted into signals that canbe provided to an audio output device (a speaker).

The OS dongle 600 can access a content server 634 using the network 638to obtain content requested by a user of the cast terminal 650. Forexample, the OS dongle 600 can receive keystroke data (and other inputdata) sent by the communication module 658. The OS dongle 600 caninterpret the keystroke data to identify content requested by a user ofthe cast terminal 650.

FIG. 6B is a diagram that illustrates an alternate use of an operatingsystem dongle 680 with a cast terminal 670. The cast terminal 670 issimilar to the cast terminal 650 as described with reference to FIG. 6A.The cast terminal 670 includes a display component 672 that includes adisplay module 674. The OS dongle 680 can be the OS dongle 100 as shownin FIGS. 1A-D or the OS dongle 200 as shown in FIG. 2 without theinclusion of the display port 104.

The cast terminal 670 can communicate with external devices using one ormore types of wireless communication protocols (e.g., WiFi, Bluetooth,Bluetooth LE). In the example shown in FIG. 6B, the cast terminal 670may not include a port (e.g., the display module 664 may not include aport). In addition or in the alternative, the OS system dongle 680 maynot include a display connector. The cast terminal 650 may communicatewith (interface to) the OS dongle 680 using one or more wirelessconnections to receive content, image, and/or data files from the cloudor some type of server remote from the cast terminal 670. In a similarmanner, the OS dongle 680 can provide the “brains” needed by the castterminal 670 (e.g., the OS dongle 680 can provide the central computingpower the cast terminal 670 lacks) to create a computing device withsimilar capabilities as a laptop or notebook computing device.

The OS dongle 680 can connect to the one or more computer systems (e.g.,computer system 630 and computer system 634) by way of a network 638using a WiFi or other type of wireless communication protocolconnection. The OS dongle 500 can communicate with the computer systems630, 634 (and the computer systems 630, 634 can communicate with the OSdongle 600) using the network 638. For example, referring to FIG. 2, theWiFi communication module 218 can communicate wirelessly with a network638 using a WiFi antenna 686. Referring to the examples described withreference to FIGS. 3-5, and 6A-B, in some implementations, the same OSdongle can be used in all of the examples scenarios described in FIGS.3-6 and, in some cases, by multiple users of the OS dongle. For example,the owner of an OS dongle can be considered the cloud administrator forthe OS dongle. Multiple users can use the OS dongle, however, the ownerof the OS dongle (the cloud administrator for the OS dongle) candetermine the allowed usage of the OS dongle by each individual user.

As an example, the owner of the dongle may be traveling with coworkersto a conference, and the OS dongle owner can be preparing a presentationfor the conference. The scenario illustrated in FIG. 3 may depict anoffice, home, or hotel room setup for the OS dongle owner who can plugin/interface the OS dongle to the display monitor 320, and useapplications and files resident in the cloud to work on theirpresentation. In some cases, the OS dongle owner may store a copy of thepresentation locally in the memory included on the OS dongle. The OSdongle owner may then share the OS dongle with a coworker who is alsopresenting at the conference. The scenario illustrated in FIG. 4 maydepict an office, home, or hotel room setup for the coworker who canplug in/interface the OS dongle to the display monitor 420, and useapplications and files resident in the cloud to work on theirpresentation. In some cases, the OS dongle owner may setup the OS dongleto restrict the applications and files accessible to the coworker whenthey use the OS dongle. In a similar manner, the coworker can store acopy of their presentation locally in the memory included on the OSdongle. The stored files of the coworker and the OS dongle owner can bepartitioned into different file spaces that can be accessed only by theowner of the files.

The OS dongle owner and their coworker can bring the OS dongle to aconference room where they will each present their presentations.Referring to the scenario illustrated in FIG. 5A, for example, the OSdongle can be plugged into/interfaced with the display monitor 520,which can be the display that is being used for the presentations. Eachuser of the OS dongle (the owner and the coworker) can individuallyauthenticate themselves for use of the OS dongle. In some cases, if thepresentation was stored locally on the OS dongle, the OS dongle mayoperate offline (not connected to a network). For example, the mobiledevice 544 can be used to authenticate the user to the OS dongle as wellas a type of remote control for controlling the presentation on thedisplay monitor 520.

For example, the owner of an OS dongle may authorize another user of theOS dongle for a more limited use of operation. The owner of the OSdongle may have unlimited use of cloud applications, content, and files.An authorized user of the OS dongle may have limited use of the OSdongle to a subset of applications, content, and files determined by theowner of the OS dongle (e.g., a type of parental control). For example,the owner of the OS dongle may have unlimited use of cloud applications,content, and files. An authorized user of the OS dongle may be limitedto the use of the OS dongle in a kiosk mode of operation. For example,the owner may lend the OS dongle to a coworker who may plug the OSdongle into a display monitor that can display updated weatherconditions.

In some implementations, an OS dongle (e.g., the OS dongles 100, 200,300, 400, 500, and 600) can run applications for an operating systemthat is different than the operating system included in the OS dongle.In some cases, the OS dongle can run a virtual operating system in thecloud that can then execute the applications. In other cases, theapplications operating in the different operating system may beimplemented to also execute on the operating system included in the OSdongle.

The OS dongles described herein can be self-configuring. Referring toFIG. 3, for example, when the OS dongle 300 boots up it can discover andconnect to the keyboard 340 and the mouse 342. Based on making theseconnections, the OS dongle 300 can be configured to run the operatingsystem in a full computer mode. For example, in this mode of operationthe user of the OS dongle 300 can access files, applications, andcontent on the cloud. In addition, the user can access data storedinternal to the OS dongle 300 in memory 212. The data can be stored in asecure manner and may only be accessible by the user who created thedata.

Referring to FIG. 4, for example, the OS dongle 400 can discover andconnect to the keyboard 440 and the mobile device 444. Based on makingthese connections, the OS dongle 400 can be configured to run theoperating system in a full computer mode, using the mobile device 444 asa type of mouse input device (e.g., a pointing device). Referring toFIG. 5A, for example, the OS dongle 500 may discover and connect to themobile device 544, receive an authentication code and then the OS dongle500 can boot into a kiosk mode of operation. Referring to FIG. 6A, forexample, the OS dongle 600 may discover and connect to the castingterminal 650, and receive an indication of a web browser applicationand/or content in the cloud for use by the OS dongle 600. The OS dongle600 can run the web browser application in the cloud and provide or“cast” a tab or page of the web browser application to the cast terminal650.

In some implementations, a user of an OS dongle can alternate betweenmodes of operation by changing/swapping in and out the peripherals thatare connected to the OS dongle.

FIG. 7 is a flowchart that illustrates a method 700 for using anoperating system dongle. In some implementations, the systems describedherein can implement the method 700. For example, the method 700 can beimplemented by the apparatus and systems included in FIGS. 1A-D, 2, 3,4, 5A-B, and 6A-B.

A display monitor is determined to be operatively connected to a displayport included in an operating system (OS) dongle (block 702). At leastone peripheral device operatively connected to the OS dongle isidentified (block 704). The OS dongle receives an indication ofrequested content from the at least one peripheral device (block 706).Responsive to receiving the indication of the requested content, therequested content is obtained from a computer system remote from the OSdongle (block 708). The obtaining can include operatively connecting theOS dongle to a network. The network can be operatively interfaced to thecomputer system that includes the requested remote content. The OSdongle provides the requested content to the display monitor using thedisplay port (block 710).

FIG. 8 is a flowchart that illustrates an alternate method 800 for usingan operating system dongle. In some implementations, the systemsdescribed herein can implement the method 800. For example, the method700 can be implemented by the apparatus and systems included in FIGS.1A-D, 2, 3, 4, 5A-B, and 6A-B.

An operating system included in an OS dongle is booted (block 802). Adisplay monitor is determined to be connected to a display port includedin an operating system (OS) dongle (block 804). Authentication of a userof the OS dongle is requested (block 806). User authenticationcredentials are received (block 808). The OS dongle enters a kiosk modeof operation based on the received user authentication credentials(block 810). A connection to a network is established (block 812). Thenetwork can include a connection to at least one computer system. The OSdongle executes a cloud based application on the OS dongle (block 814).The cloud based application can be included in the at least one computersystem. The OS dongle provides output from the cloud based applicationto the display monitor using the display port (block 816).

The logic flow depicted in FIG. 8 (order of the steps included in themethod 800) does not require the particular order shown, or necessarilythe following of a sequential order, to achieve desirable results. Inaddition, other steps may be provided, or steps may be eliminated, fromthe described flow of the method 800.

FIG. 9 shows an example of a generic computer device 900 and a genericmobile computer device 950, which may be used with the techniquesdescribed herein. For example, the OS dongles described herein mayconnect to or interface with the generic computer device 900 and thegeneric mobile computer device 950.

Computing device 900 is intended to represent various forms of digitalcomputers, such as laptops, desktops, workstations, personal digitalassistants, servers, blade servers, mainframes, and other appropriatecomputers. Computing device 950 is intended to represent various formsof mobile devices, such as personal digital assistants, cellulartelephones, smart phones, and other similar computing devices. Thecomponents shown here, their connections and relationships, and theirfunctions, are meant to be exemplary only, and are not meant to limitimplementations of the inventions described and/or claimed in thisdocument.

Computing device 900 includes a processor 902, memory 904, a storagedevice 906, a high-speed interface 908 connecting to memory 904 andhigh-speed expansion ports 910, and a low speed interface 912 connectingto low speed bus 914 and storage device 906. Each of the components 902,904, 906, 908, 910, and 912, are interconnected using various busses,and may be mounted on a common motherboard or in other manners asappropriate. The processor 902 can process instructions for executionwithin the computing device 900, including instructions stored in thememory 904 or on the storage device 906 to display graphical informationfor a GUI on an external input/output device, such as display 916coupled to high speed interface 908. In other implementations, multipleprocessors and/or multiple buses may be used, as appropriate, along withmultiple memories and types of memory. Also, multiple computing devices900 may be connected, with each device providing portions of thenecessary operations (e.g., as a server bank, a group of blade servers,or a multi-processor system).

The memory 904 stores information within the computing device 900. Inone implementation, the memory 904 is a volatile memory unit or units.In another implementation, the memory 904 is a non-volatile memory unitor units. The memory 904 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 906 is capable of providing mass storage for thecomputing device 900. In one implementation, the storage device 906 maybe or contain a computer-readable medium, such as a floppy disk device,a hard disk device, an optical disk device, or a tape device, a flashmemory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. A computer program product can be tangibly embodied inan information carrier. The computer program product may also containinstructions that, when executed, perform one or more methods, such asthose described above. The information carrier is a computer- ormachine-readable medium, such as the memory 904, the storage device 906,or memory on processor 902.

The high speed controller 908 manages bandwidth-intensive operations forthe computing device 900, while the low speed controller 912 manageslower bandwidth-intensive operations. Such allocation of functions isexemplary only. In one implementation, the high-speed controller 908 iscoupled to memory 904, display 916 (e.g., through a graphics processoror accelerator), and to high-speed expansion ports 910, which may acceptvarious expansion cards (not shown). In the implementation, low-speedcontroller 912 is coupled to storage device 906 and low-speed expansionport 914. The low-speed expansion port, which may include variouscommunication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet)may be coupled to one or more input/output devices, such as a keyboard,a pointing device, a scanner, or a networking device such as a switch orrouter, e.g., through a network adapter.

The computing device 900 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 920, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 924. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 922. Alternatively, components from computing device 900 may becombined with other components in a mobile device (not shown), such asdevice 950. Each of such devices may contain one or more of computingdevice 900, 950, and an entire system may be made up of multiplecomputing devices 900, 950 communicating with each other.

Computing device 950 includes a processor 952, memory 964, aninput/output device such as a display 954, a communication interface966, and a transceiver 968, among other components. The device 950 mayalso be provided with a storage device, such as a microdrive or otherdevice, to provide additional storage. Each of the components 950, 952,964, 954, 966, and 968, are interconnected using various buses, andseveral of the components may be mounted on a common motherboard or inother manners as appropriate.

The processor 952 can execute instructions within the computing device950, including instructions stored in the memory 964. The processor maybe implemented as a chipset of chips that include separate and multipleanalog and digital processors. The processor may provide, for example,for coordination of the other components of the device 950, such ascontrol of user interfaces, applications run by device 950, and wirelesscommunication by device 950.

Processor 952 may communicate with a user through control interface 958and display interface 956 coupled to a display 954. The display 954 maybe, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display)or an OLED (Organic Light Emitting Diode) display, or other appropriatedisplay technology. The display interface 956 may comprise appropriatecircuitry for driving the display 954 to present graphical and otherinformation to a user. The control interface 958 may receive commandsfrom a user and convert them for submission to the processor 952. Inaddition, an external interface 962 may be provide in communication withprocessor 952, so as to enable near area communication of device 950with other devices. External interface 962 may provide, for example, forwired communication in some implementations, or for wirelesscommunication in other implementations, and multiple interfaces may alsobe used.

The memory 964 stores information within the computing device 950. Thememory 964 can be implemented as one or more of a computer-readablemedium or media, a volatile memory unit or units, or a non-volatilememory unit or units. Expansion memory 974 may also be provided andconnected to device 950 through expansion interface 972, which mayinclude, for example, a SIMM (Single In Line Memory Module) cardinterface. Such expansion memory 974 may provide extra storage space fordevice 950, or may also store applications or other information fordevice 950. Specifically, expansion memory 974 may include instructionsto carry out or supplement the processes described above, and mayinclude secure information also. Thus, for example, expansion memory 974may be provide as a security module for device 950, and may beprogrammed with instructions that permit secure use of device 950. Inaddition, secure applications may be provided via the SIMM cards, alongwith additional information, such as placing identifying information onthe SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 964, expansionmemory 974, or memory on processor 952, which may be received, forexample, over transceiver 968 or external interface 962.

Device 950 may communicate wirelessly through communication interface966, which may include digital signal processing circuitry wherenecessary. Communication interface 966 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 968. In addition, short-range communication may occur, suchas using a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS (Global Positioning System) receiver module 970 mayprovide additional navigation- and location-related wireless data todevice 950, which may be used as appropriate by applications running ondevice 950.

Device 950 may also communicate audibly using audio codec 960, which mayreceive spoken information from a user and convert it to usable digitalinformation. Audio codec 960 may likewise generate audible sound for auser, such as through a speaker, e.g., in a handset of device 950. Suchsound may include sound from voice telephone calls, may include recordedsound (e.g., voice messages, music files, etc.) and may also includesound generated by applications operating on device 950.

The computing device 950 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 980. It may also be implemented as part of a smartphone 982, personal digital assistant, or other similar mobile device.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), and theInternet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

A number of embodiments have been described. Nevertheless, it will beunderstood that various modifications may be made without departing fromthe spirit and scope of the disclosure.

In addition, the logic flows depicted in the figures do not require theparticular order shown, or sequential order, to achieve desirableresults. In addition, other steps may be provided, or steps may beeliminated, from the described flows, and other components may be addedto, or removed from, the described systems. Accordingly, otherembodiments are within the scope of the following claims.

What is claimed is:
 1. A method comprising: determining that a displaymonitor is operatively connected to a display port included in anoperating system (OS) dongle; identifying at least one peripheral deviceoperatively connected to the OS dongle; receiving, by the OS dongle, anindication of requested content from the at least one peripheral device;responsive to receiving the indication of the requested content,obtaining the requested content from a computer system remote from theOS dongle, the obtaining comprising operatively connecting the OS dongleto a network, the network being operatively interfaced to the computersystem that includes the requested remote content; and providing, by theOS dongle, the requested content to the display monitor using thedisplay port.
 2. The method of claim 1, further comprising: receiving,by the OS dongle, user authentication credentials; and based onverifying the user authentication credentials, enabling the OS dongle toreceive input from the at least one peripheral device.
 3. The method ofclaim 2, wherein the user authentication credentials are associated withan owner of the OS dongle.
 4. The method of claim 2, wherein the userauthentication credentials are associated with a user of the OS dongleauthorized by a cloud administrator of the OS dongle.
 5. The method ofclaim 1, wherein the at least one peripheral device is one of akeyboard, trackpad, touchpad, and mouse.
 6. A method comprising: bootingan operating system; included in an operating system (OS) dongle;determining that a display monitor is connected to a display portincluded in the OS dongle; requesting authentication of a user of the OSdongle; receiving user authentication credentials; entering the OSdongle into a kiosk mode of operation based on the received userauthentication credentials; establishing a connection to a network, thenetwork including a connection to at least one computer system;executing, by the OS dongle, a cloud based application on the OS dongle,the cloud based application included in the at least one computersystem; and providing, by the OS dongle, output from the cloud basedapplication to the display monitor using the display port.
 7. The methodof claim 6, wherein the user authentication credentials are for an ownerof the OS dongle.
 8. The method of claim 7, further comprising:accessing at least one setting for the owner of the OS dongle based onthe received user authentication credentials, the at least one settingbeing a list of users authorized to use the OS dongle; and updating thelist of authorized users.
 9. The method of claim 8, further comprising:updating, for at least one authorized user included in the updated listof authorized users, an indication of what the at least one authorizeduser is authorized to do with the OS dongle.
 10. The method of claim 6,wherein the user authentication credentials are for a user authorized asa user of the OS dongle by an owner of the OS dongle.
 11. The method ofclaim 6, further comprising: accessing at least one setting for the userof the OS dongle based on the received user authentication credentials;and changing, by the user, the accessed at least one setting.
 12. Themethod of claim 6, wherein receiving user authentication credentialsincludes receiving a near field communication (NFC) enabled one timepassword (OTC) token.
 13. An apparatus comprising: a display portconfigured to interface to a display connector included on a displaymonitor; a WiFi communication module; a central processing unit (CPU); agraphics processing unit (GPU); a video processing unit (VPU); and aWiFi antenna configured to operatively interface with the WiFicommunication module and a WiFi network external to the apparatus, theCPU, the GPU, and the VPU operatively configured to execute an operatingsystem on the apparatus, and to execute at least one application storedremote from the apparatus.
 14. The apparatus of claim 13, wherein theremote application is stored on the cloud.
 15. The apparatus of claim13, further comprising: a Bluetooth communication module configured tooperatively couple at least one peripheral device to the apparatus. 16.The apparatus of claim 15, wherein the at least one peripheral device isone of a keyboard, trackpad, touchpad, and mouse.
 17. The apparatus ofclaim 13, further comprising: at least one communications connector; anda Universal Serial Bus (USB) communication module configured tooperatively couple at least one peripheral device interfaced to the atleast one communications connector to the apparatus.
 18. The apparatusof claim 13, further comprising: a memory configured to operativelysupport the operating system while allowing a user to locally buffercontent and data securely.
 19. The apparatus of claim 18, furthercomprising: a memory interface configured to provide an interfacebetween the memory and the CPU, the GPU, and the VPU.
 20. The apparatusof claim 13, wherein a height of the apparatus is approximately 0.5inches, a length of the apparatus is approximately 3.2 inches, and awidth of the apparatus is approximately 2.2 inches.
 21. The apparatus ofclaim 13, further comprising a communications module configured toreceive user authentication credentials, wherein the CPU, the GPU, andthe VPU are operatively configured to execute the operating system onthe apparatus and to execute the at least one application stored remotefrom the apparatus based on the received user authenticationcredentials.